#!/usr/bin/env python3
# -*- coding: utf-8 -*-

__auther__ = 'teffy'

'''
@filename decorators
@created on 2018-01-16
@poject:python_flask_demo
@auther:teffy
'''

from functools import wraps
from flask import abort
from flask_login import current_user
from app.models import Permission


def permission_required(permission):
    def decorator(f):
        @wraps(f)
        def decorated_function(*args, **kwargs):
            if not current_user.can(permission):
                abort(403)
            return f(*args, **kwargs)

        return decorated_function

    return decorator

def admin_required(f):
    return permission_required(Permission.ADMINISTER)(f)
